Commit 55c49afc authored by Michael Niedermayer's avatar Michael Niedermayer

Merge remote-tracking branch 'qatar/master'

* qatar/master:
  yuv4mpeg: return proper error codes.
  Give all anonymously typedeffed structs in headers a name
  fate: Add parseutils test
  parseutils-test: Drop random colors from parsing test
  vf_pad/scale: use double precision for aspect ratios.
  build: error on variable-length arrays
  ppc: swscale: rework yuv2planeX_altivec()
  ppc: fmtconvert: kill VLA in float_to_int16_interleave_altivec()
  x86: dsputil: kill VLA in gmc_mmx()
  libspeexenc: Updated commentary to reflect recent changes
  libspeexenc: Add an option for enabling DTX
  doc/APIchanges: fill in missing dates and hashes.
  lavr: bump major to 1 and declare it stable.
  lavr: change the type of the data buffers to uint8_t**.
  lavc: deprecate the audio resampling API.

Conflicts:
	cmdutils.h
	configure
	doc/APIchanges
	ffplay.c
	libavcodec/dwt.h
	libavcodec/libspeexenc.c
	libavfilter/vf_pad.c
	libavfilter/vf_scale.c
	libavformat/asf.h
	tests/fate/libavutil.mak
	tests/ref/fate/parseutils
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents 886c3662 d3a72bec
...@@ -139,7 +139,7 @@ typedef struct SpecifierOpt { ...@@ -139,7 +139,7 @@ typedef struct SpecifierOpt {
} u; } u;
} SpecifierOpt; } SpecifierOpt;
typedef struct { typedef struct OptionDef {
const char *name; const char *name;
int flags; int flags;
#define HAS_ARG 0x0001 #define HAS_ARG 0x0001
......
...@@ -3911,6 +3911,7 @@ elif enabled gcc; then ...@@ -3911,6 +3911,7 @@ elif enabled gcc; then
check_optflags -fno-tree-vectorize check_optflags -fno-tree-vectorize
check_cflags -Werror=implicit-function-declaration check_cflags -Werror=implicit-function-declaration
check_cflags -Werror=missing-prototypes check_cflags -Werror=missing-prototypes
# check_cflags -Werror=vla
elif enabled llvm_gcc; then elif enabled llvm_gcc; then
check_cflags -mllvm -stack-alignment=16 check_cflags -mllvm -stack-alignment=16
elif enabled clang; then elif enabled clang; then
......
...@@ -97,7 +97,12 @@ API changes, most recent first: ...@@ -97,7 +97,12 @@ API changes, most recent first:
2012-03-26 - a67d9cf - lavfi 2.66.100 2012-03-26 - a67d9cf - lavfi 2.66.100
Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions. Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions.
2012-09-23 - a42aada - lavc 54.28.0 - avcodec.h 2012-10-05 - e7ba5b1 - lavr 1.0.0 - avresample.h
Data planes parameters to avresample_convert() and
avresample_read() are now uint8_t** instead of void**.
Libavresample is now stable.
2012-09-24 - a42aada - lavc 54.28.0 - avcodec.h
Add avcodec_free_frame(). This function must now Add avcodec_free_frame(). This function must now
be used for freeing an AVFrame. be used for freeing an AVFrame.
......
...@@ -113,7 +113,7 @@ enum OCStatus { ...@@ -113,7 +113,7 @@ enum OCStatus {
OC_LOCKED, ///< Output configuration locked in place OC_LOCKED, ///< Output configuration locked in place
}; };
typedef struct { typedef struct OutputConfiguration {
MPEG4AudioConfig m4ac; MPEG4AudioConfig m4ac;
uint8_t layout_map[MAX_ELEM_ID*4][3]; uint8_t layout_map[MAX_ELEM_ID*4][3];
int layout_map_tags; int layout_map_tags;
...@@ -125,7 +125,7 @@ typedef struct { ...@@ -125,7 +125,7 @@ typedef struct {
/** /**
* Predictor State * Predictor State
*/ */
typedef struct { typedef struct PredictorState {
float cor0; float cor0;
float cor1; float cor1;
float var0; float var0;
...@@ -146,7 +146,7 @@ typedef struct { ...@@ -146,7 +146,7 @@ typedef struct {
/** /**
* Long Term Prediction * Long Term Prediction
*/ */
typedef struct { typedef struct LongTermPrediction {
int8_t present; int8_t present;
int16_t lag; int16_t lag;
float coef; float coef;
...@@ -156,7 +156,7 @@ typedef struct { ...@@ -156,7 +156,7 @@ typedef struct {
/** /**
* Individual Channel Stream * Individual Channel Stream
*/ */
typedef struct { typedef struct IndividualChannelStream {
uint8_t max_sfb; ///< number of scalefactor bands per group uint8_t max_sfb; ///< number of scalefactor bands per group
enum WindowSequence window_sequence[2]; enum WindowSequence window_sequence[2];
uint8_t use_kb_window[2]; ///< If set, use Kaiser-Bessel window, otherwise use a sinus window. uint8_t use_kb_window[2]; ///< If set, use Kaiser-Bessel window, otherwise use a sinus window.
...@@ -177,7 +177,7 @@ typedef struct { ...@@ -177,7 +177,7 @@ typedef struct {
/** /**
* Temporal Noise Shaping * Temporal Noise Shaping
*/ */
typedef struct { typedef struct TemporalNoiseShaping {
int present; int present;
int n_filt[8]; int n_filt[8];
int length[8][4]; int length[8][4];
...@@ -189,7 +189,7 @@ typedef struct { ...@@ -189,7 +189,7 @@ typedef struct {
/** /**
* Dynamic Range Control - decoded from the bitstream but not processed further. * Dynamic Range Control - decoded from the bitstream but not processed further.
*/ */
typedef struct { typedef struct DynamicRangeControl {
int pce_instance_tag; ///< Indicates with which program the DRC info is associated. int pce_instance_tag; ///< Indicates with which program the DRC info is associated.
int dyn_rng_sgn[17]; ///< DRC sign information; 0 - positive, 1 - negative int dyn_rng_sgn[17]; ///< DRC sign information; 0 - positive, 1 - negative
int dyn_rng_ctl[17]; ///< DRC magnitude information int dyn_rng_ctl[17]; ///< DRC magnitude information
...@@ -202,7 +202,7 @@ typedef struct { ...@@ -202,7 +202,7 @@ typedef struct {
*/ */
} DynamicRangeControl; } DynamicRangeControl;
typedef struct { typedef struct Pulse {
int num_pulse; int num_pulse;
int start; int start;
int pos[4]; int pos[4];
...@@ -212,7 +212,7 @@ typedef struct { ...@@ -212,7 +212,7 @@ typedef struct {
/** /**
* coupling parameters * coupling parameters
*/ */
typedef struct { typedef struct ChannelCoupling {
enum CouplingPoint coupling_point; ///< The point during decoding at which coupling is applied. enum CouplingPoint coupling_point; ///< The point during decoding at which coupling is applied.
int num_coupled; ///< number of target elements int num_coupled; ///< number of target elements
enum RawDataBlockType type[8]; ///< Type of channel element to be coupled - SCE or CPE. enum RawDataBlockType type[8]; ///< Type of channel element to be coupled - SCE or CPE.
...@@ -226,7 +226,7 @@ typedef struct { ...@@ -226,7 +226,7 @@ typedef struct {
/** /**
* Single Channel Element - used for both SCE and LFE elements. * Single Channel Element - used for both SCE and LFE elements.
*/ */
typedef struct { typedef struct SingleChannelElement {
IndividualChannelStream ics; IndividualChannelStream ics;
TemporalNoiseShaping tns; TemporalNoiseShaping tns;
Pulse pulse; Pulse pulse;
...@@ -245,7 +245,7 @@ typedef struct { ...@@ -245,7 +245,7 @@ typedef struct {
/** /**
* channel element - generic struct for SCE/CPE/CCE/LFE * channel element - generic struct for SCE/CPE/CCE/LFE
*/ */
typedef struct { typedef struct ChannelElement {
// CPE specific // CPE specific
int common_window; ///< Set if channels share a common 'IndividualChannelStream' in bitstream. int common_window; ///< Set if channels share a common 'IndividualChannelStream' in bitstream.
int ms_mode; ///< Signals mid/side stereo flags coding mode (used by encoder) int ms_mode; ///< Signals mid/side stereo flags coding mode (used by encoder)
...@@ -260,7 +260,7 @@ typedef struct { ...@@ -260,7 +260,7 @@ typedef struct {
/** /**
* main AAC context * main AAC context
*/ */
typedef struct { typedef struct AACContext {
AVCodecContext *avctx; AVCodecContext *avctx;
AVFrame frame; AVFrame frame;
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#define AAC_ADTS_HEADER_SIZE 7 #define AAC_ADTS_HEADER_SIZE 7
typedef struct { typedef struct AACADTSHeaderInfo {
uint32_t sample_rate; uint32_t sample_rate;
uint32_t samples; uint32_t samples;
uint32_t bit_rate; uint32_t bit_rate;
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
#define PS_AP_LINKS 3 #define PS_AP_LINKS 3
#define PS_MAX_AP_DELAY 5 #define PS_MAX_AP_DELAY 5
typedef struct { typedef struct PSContext {
int start; int start;
int enable_iid; int enable_iid;
int iid_quant; int iid_quant;
......
...@@ -93,7 +93,7 @@ typedef struct AC3BitAllocParameters { ...@@ -93,7 +93,7 @@ typedef struct AC3BitAllocParameters {
* @struct AC3HeaderInfo * @struct AC3HeaderInfo
* Coded AC-3 header values up to the lfeon element, plus derived values. * Coded AC-3 header values up to the lfeon element, plus derived values.
*/ */
typedef struct { typedef struct AC3HeaderInfo {
/** @name Coded elements /** @name Coded elements
* @{ * @{
*/ */
......
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
/** Large enough for maximum possible frame size when the specification limit is ignored */ /** Large enough for maximum possible frame size when the specification limit is ignored */
#define AC3_FRAME_BUFFER_SIZE 32768 #define AC3_FRAME_BUFFER_SIZE 32768
typedef struct { typedef struct AC3DecodeContext {
AVClass *class; ///< class for AVOptions AVClass *class; ///< class for AVOptions
AVCodecContext *avctx; ///< parent context AVCodecContext *avctx; ///< parent context
AVFrame frame; ///< AVFrame for decoded output AVFrame frame; ///< AVFrame for decoded output
......
...@@ -50,7 +50,7 @@ void ff_acelp_vectors_init(ACELPVContext *c); ...@@ -50,7 +50,7 @@ void ff_acelp_vectors_init(ACELPVContext *c);
void ff_acelp_vectors_init_mips(ACELPVContext *c); void ff_acelp_vectors_init_mips(ACELPVContext *c);
/** Sparse representation for the algebraic codebook (fixed) vector */ /** Sparse representation for the algebraic codebook (fixed) vector */
typedef struct { typedef struct AMRFixed {
int n; int n;
int x[10]; int x[10];
float y[10]; float y[10];
......
...@@ -35,11 +35,11 @@ ...@@ -35,11 +35,11 @@
#include "avcodec.h" #include "avcodec.h"
typedef struct { typedef struct ADXChannelState {
int s1,s2; int s1,s2;
} ADXChannelState; } ADXChannelState;
typedef struct { typedef struct ADXContext {
AVFrame frame; AVFrame frame;
int channels; int channels;
ADXChannelState prev[2]; ADXChannelState prev[2];
......
...@@ -55,7 +55,7 @@ enum Mode { ...@@ -55,7 +55,7 @@ enum Mode {
/** /**
* AMRNB unpacked data subframe * AMRNB unpacked data subframe
*/ */
typedef struct { typedef struct AMRNBSubframe {
uint16_t p_lag; ///< index to decode the pitch lag uint16_t p_lag; ///< index to decode the pitch lag
uint16_t p_gain; ///< index to decode the pitch gain uint16_t p_gain; ///< index to decode the pitch gain
uint16_t fixed_gain; ///< index to decode the fixed gain factor, for MODE_12k2 and MODE_7k95 uint16_t fixed_gain; ///< index to decode the fixed gain factor, for MODE_12k2 and MODE_7k95
...@@ -65,7 +65,7 @@ typedef struct { ...@@ -65,7 +65,7 @@ typedef struct {
/** /**
* AMRNB unpacked data frame * AMRNB unpacked data frame
*/ */
typedef struct { typedef struct AMRNBFrame {
uint16_t lsf[5]; ///< lsf parameters: 5 parameters for MODE_12k2, only 3 for other modes uint16_t lsf[5]; ///< lsf parameters: 5 parameters for MODE_12k2, only 3 for other modes
AMRNBSubframe subframe[4]; ///< unpacked data for each subframe AMRNBSubframe subframe[4]; ///< unpacked data for each subframe
} AMRNBFrame; } AMRNBFrame;
......
...@@ -66,7 +66,7 @@ enum Mode { ...@@ -66,7 +66,7 @@ enum Mode {
/* All decoded parameters in these structs must be 2 bytes long /* All decoded parameters in these structs must be 2 bytes long
* because of the direct indexing at the frame parsing */ * because of the direct indexing at the frame parsing */
typedef struct { typedef struct AMRWBSubFrame {
uint16_t adap; ///< adaptive codebook index uint16_t adap; ///< adaptive codebook index
uint16_t ltp; ///< ltp-filtering flag uint16_t ltp; ///< ltp-filtering flag
uint16_t vq_gain; ///< VQ adaptive and innovative gains uint16_t vq_gain; ///< VQ adaptive and innovative gains
...@@ -75,7 +75,7 @@ typedef struct { ...@@ -75,7 +75,7 @@ typedef struct {
uint16_t pul_il[4]; ///< LSBs part of codebook index uint16_t pul_il[4]; ///< LSBs part of codebook index
} AMRWBSubFrame; } AMRWBSubFrame;
typedef struct { typedef struct AMRWBFrame {
uint16_t vad; ///< voice activity detection flag uint16_t vad; ///< voice activity detection flag
uint16_t isp_id[7]; ///< index of ISP subvectors uint16_t isp_id[7]; ///< index of ISP subvectors
AMRWBSubFrame subframe[4]; ///< data for subframes AMRWBSubFrame subframe[4]; ///< data for subframes
......
...@@ -4323,9 +4323,11 @@ int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, ...@@ -4323,9 +4323,11 @@ int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size,
* @} * @}
*/ */
#if FF_API_AVCODEC_RESAMPLE
/** /**
* @defgroup lavc_resample Audio resampling * @defgroup lavc_resample Audio resampling
* @ingroup libavc * @ingroup libavc
* @deprecated use libswresample instead
* *
* @{ * @{
*/ */
...@@ -4350,6 +4352,7 @@ typedef struct ReSampleContext ReSampleContext; ...@@ -4350,6 +4352,7 @@ typedef struct ReSampleContext ReSampleContext;
* @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate
* @return allocated ReSampleContext, NULL if error occurred * @return allocated ReSampleContext, NULL if error occurred
*/ */
attribute_deprecated
ReSampleContext *av_audio_resample_init(int output_channels, int input_channels, ReSampleContext *av_audio_resample_init(int output_channels, int input_channels,
int output_rate, int input_rate, int output_rate, int input_rate,
enum AVSampleFormat sample_fmt_out, enum AVSampleFormat sample_fmt_out,
...@@ -4357,6 +4360,7 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels, ...@@ -4357,6 +4360,7 @@ ReSampleContext *av_audio_resample_init(int output_channels, int input_channels,
int filter_length, int log2_phase_count, int filter_length, int log2_phase_count,
int linear, double cutoff); int linear, double cutoff);
attribute_deprecated
int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples); int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples);
/** /**
...@@ -4365,6 +4369,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl ...@@ -4365,6 +4369,7 @@ int audio_resample(ReSampleContext *s, short *output, short *input, int nb_sampl
* @param s a non-NULL pointer to a resample context previously * @param s a non-NULL pointer to a resample context previously
* created with av_audio_resample_init() * created with av_audio_resample_init()
*/ */
attribute_deprecated
void audio_resample_close(ReSampleContext *s); void audio_resample_close(ReSampleContext *s);
...@@ -4377,6 +4382,7 @@ void audio_resample_close(ReSampleContext *s); ...@@ -4377,6 +4382,7 @@ void audio_resample_close(ReSampleContext *s);
between the 2 closest, if 0 the closest will be used between the 2 closest, if 0 the closest will be used
* @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate
*/ */
attribute_deprecated
struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff); struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff);
/** /**
...@@ -4388,6 +4394,7 @@ struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter ...@@ -4388,6 +4394,7 @@ struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter
* @param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context. * @param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context.
* @return the number of samples written in dst or -1 if an error occurred * @return the number of samples written in dst or -1 if an error occurred
*/ */
attribute_deprecated
int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx); int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx);
...@@ -4403,12 +4410,15 @@ int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consum ...@@ -4403,12 +4410,15 @@ int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consum
* note, due to rounding the actual compensation might be slightly different, * note, due to rounding the actual compensation might be slightly different,
* especially if the compensation_distance is large and the in_rate used during init is small * especially if the compensation_distance is large and the in_rate used during init is small
*/ */
attribute_deprecated
void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance); void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance);
attribute_deprecated
void av_resample_close(struct AVResampleContext *c); void av_resample_close(struct AVResampleContext *c);
/** /**
* @} * @}
*/ */
#endif
/** /**
* @addtogroup lavc_picture * @addtogroup lavc_picture
......
...@@ -29,11 +29,11 @@ ...@@ -29,11 +29,11 @@
#include "libavutil/common.h" #include "libavutil/common.h"
#include "libavutil/intreadwrite.h" #include "libavutil/intreadwrite.h"
typedef struct { typedef struct GetByteContext {
const uint8_t *buffer, *buffer_end, *buffer_start; const uint8_t *buffer, *buffer_end, *buffer_start;
} GetByteContext; } GetByteContext;
typedef struct { typedef struct PutByteContext {
uint8_t *buffer, *buffer_end, *buffer_start; uint8_t *buffer, *buffer_end, *buffer_start;
int eof; int eof;
} PutByteContext; } PutByteContext;
......
...@@ -152,7 +152,7 @@ struct dec_2dvlc { ...@@ -152,7 +152,7 @@ struct dec_2dvlc {
int8_t max_run; int8_t max_run;
}; };
typedef struct { typedef struct AVSContext {
MpegEncContext s; MpegEncContext s;
CAVSDSPContext cdsp; CAVSDSPContext cdsp;
Picture picture; ///< currently decoded frame Picture picture; ///< currently decoded frame
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
#include "avcodec.h" #include "avcodec.h"
#include "get_bits.h" #include "get_bits.h"
typedef struct { typedef struct dirac_source_params {
unsigned width; unsigned width;
unsigned height; unsigned height;
uint8_t chroma_format; ///< 0: 444 1: 422 2: 420 uint8_t chroma_format; ///< 0: 444 1: 422 2: 420
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#include <stdint.h> #include <stdint.h>
#include "avcodec.h" #include "avcodec.h"
typedef struct { typedef struct CIDEntry {
int cid; int cid;
unsigned int width, height; unsigned int width, height;
int interlaced; int interlaced;
......
...@@ -29,12 +29,12 @@ ...@@ -29,12 +29,12 @@
#include "mpegvideo.h" #include "mpegvideo.h"
#include "dnxhddata.h" #include "dnxhddata.h"
typedef struct { typedef struct RCCMPEntry {
uint16_t mb; uint16_t mb;
int value; int value;
} RCCMPEntry; } RCCMPEntry;
typedef struct { typedef struct RCEntry {
int ssd; int ssd;
int bits; int bits;
} RCEntry; } RCEntry;
......
...@@ -29,7 +29,7 @@ typedef short IDWTELEM; ...@@ -29,7 +29,7 @@ typedef short IDWTELEM;
#define MAX_DWT_SUPPORT 8 #define MAX_DWT_SUPPORT 8
#define MAX_DECOMPOSITIONS 8 #define MAX_DECOMPOSITIONS 8
typedef struct { typedef struct DWTCompose {
IDWTELEM *b[MAX_DWT_SUPPORT]; IDWTELEM *b[MAX_DWT_SUPPORT];
IDWTELEM *b0; IDWTELEM *b0;
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#define PREV_SAMPLES_BUF_SIZE 1024 #define PREV_SAMPLES_BUF_SIZE 1024
typedef struct { typedef struct G722Context {
const AVClass *class; const AVClass *class;
AVFrame frame; AVFrame frame;
int bits_per_codeword; int bits_per_codeword;
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#include <stdint.h> #include <stdint.h>
#include "avcodec.h" #include "avcodec.h"
typedef struct { typedef struct GSMContext {
AVFrame frame; AVFrame frame;
// Contains first 120 elements from the previous frame // Contains first 120 elements from the previous frame
// (used by long_term_synth according to the "lag"), // (used by long_term_synth according to the "lag"),
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#include "avcodec.h" #include "avcodec.h"
#include "get_bits.h" #include "get_bits.h"
typedef struct { typedef struct Node {
int16_t sym; int16_t sym;
int16_t n0; int16_t n0;
uint32_t count; uint32_t count;
......
...@@ -320,7 +320,7 @@ static const int32_t delta_tab_3_4_m10[79] = { TAB_3_4 }; ...@@ -320,7 +320,7 @@ static const int32_t delta_tab_3_4_m10[79] = { TAB_3_4 };
static const int32_t delta_tab_3_5_m10[79] = { TAB_3_5 }; static const int32_t delta_tab_3_5_m10[79] = { TAB_3_5 };
typedef struct { typedef struct vqEntry {
const int16_t *deltas; ///< delta tables for 4x4 block modes const int16_t *deltas; ///< delta tables for 4x4 block modes
const int32_t *deltas_m10; ///< delta tables for 8x8 block modes const int32_t *deltas_m10; ///< delta tables for 8x8 block modes
uint8_t num_dyads; ///< number of two-pixel deltas uint8_t num_dyads; ///< number of two-pixel deltas
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#include "mpegvideo.h" #include "mpegvideo.h"
#include "intrax8dsp.h" #include "intrax8dsp.h"
typedef struct{ typedef struct IntraX8Context {
VLC * j_ac_vlc[4];//they point to the static j_mb_vlc VLC * j_ac_vlc[4];//they point to the static j_mb_vlc
VLC * j_orient_vlc; VLC * j_orient_vlc;
VLC * j_dc_vlc[3]; VLC * j_dc_vlc[3];
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
/** /**
* huffman codebook descriptor * huffman codebook descriptor
*/ */
typedef struct { typedef struct IVIHuffDesc {
int32_t num_rows; int32_t num_rows;
uint8_t xbits[16]; uint8_t xbits[16];
} IVIHuffDesc; } IVIHuffDesc;
...@@ -48,7 +48,7 @@ typedef struct { ...@@ -48,7 +48,7 @@ typedef struct {
/** /**
* macroblock/block huffman table descriptor * macroblock/block huffman table descriptor
*/ */
typedef struct { typedef struct IVIHuffTab {
int32_t tab_sel; /// index of one of the predefined tables int32_t tab_sel; /// index of one of the predefined tables
/// or "7" for custom one /// or "7" for custom one
VLC *tab; /// pointer to the table associated with tab_sel VLC *tab; /// pointer to the table associated with tab_sel
...@@ -85,7 +85,7 @@ typedef void (DCTransformPtr) (const int32_t *in, int16_t *out, uint32_t pitch, ...@@ -85,7 +85,7 @@ typedef void (DCTransformPtr) (const int32_t *in, int16_t *out, uint32_t pitch,
/** /**
* run-value (RLE) table descriptor * run-value (RLE) table descriptor
*/ */
typedef struct { typedef struct RVMapDesc {
uint8_t eob_sym; ///< end of block symbol uint8_t eob_sym; ///< end of block symbol
uint8_t esc_sym; ///< escape symbol uint8_t esc_sym; ///< escape symbol
uint8_t runtab[256]; uint8_t runtab[256];
...@@ -98,7 +98,7 @@ extern const RVMapDesc ff_ivi_rvmap_tabs[9]; ...@@ -98,7 +98,7 @@ extern const RVMapDesc ff_ivi_rvmap_tabs[9];
/** /**
* information for Indeo macroblock (16x16, 8x8 or 4x4) * information for Indeo macroblock (16x16, 8x8 or 4x4)
*/ */
typedef struct { typedef struct IVIMbInfo {
int16_t xpos; int16_t xpos;
int16_t ypos; int16_t ypos;
uint32_t buf_offs; ///< address in the output buffer for this mb uint32_t buf_offs; ///< address in the output buffer for this mb
...@@ -113,7 +113,7 @@ typedef struct { ...@@ -113,7 +113,7 @@ typedef struct {
/** /**
* information for Indeo tile * information for Indeo tile
*/ */
typedef struct { typedef struct IVITile {
int xpos; int xpos;
int ypos; int ypos;
int width; int width;
...@@ -130,7 +130,7 @@ typedef struct { ...@@ -130,7 +130,7 @@ typedef struct {
/** /**
* information for Indeo wavelet band * information for Indeo wavelet band
*/ */
typedef struct { typedef struct IVIBandDesc {
int plane; ///< plane number this band belongs to int plane; ///< plane number this band belongs to
int band_num; ///< band number int band_num; ///< band number
int width; int width;
...@@ -178,7 +178,7 @@ typedef struct { ...@@ -178,7 +178,7 @@ typedef struct {
/** /**
* color plane (luma or chroma) information * color plane (luma or chroma) information
*/ */
typedef struct { typedef struct IVIPlaneDesc {
uint16_t width; uint16_t width;
uint16_t height; uint16_t height;
uint8_t num_bands; ///< number of bands this plane subdivided into uint8_t num_bands; ///< number of bands this plane subdivided into
...@@ -186,7 +186,7 @@ typedef struct { ...@@ -186,7 +186,7 @@ typedef struct {
} IVIPlaneDesc; } IVIPlaneDesc;
typedef struct { typedef struct IVIPicConfig {
uint16_t pic_width; uint16_t pic_width;
uint16_t pic_height; uint16_t pic_height;
uint16_t chroma_width; uint16_t chroma_width;
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
#include "avcodec.h" #include "avcodec.h"
typedef struct { typedef struct SchroVideoFormatInfo {
uint16_t width; uint16_t width;
uint16_t height; uint16_t height;
uint16_t frame_rate_num; uint16_t frame_rate_num;
......
...@@ -219,7 +219,7 @@ static av_cold int encode_init(AVCodecContext *avctx) ...@@ -219,7 +219,7 @@ static av_cold int encode_init(AVCodecContext *avctx)
/* Activiting Discontinuous Transmission */ /* Activiting Discontinuous Transmission */
if (s->dtx) { if (s->dtx) {
speex_encoder_ctl(s->enc_state, SPEEX_SET_DTX, &s->dtx); speex_encoder_ctl(s->enc_state, SPEEX_SET_DTX, &s->dtx);
if ( !(s->abr || s->vad || s->header.vbr)) if (!(s->abr || s->vad || s->header.vbr))
av_log(avctx, AV_LOG_WARNING, "DTX is not much of use without ABR, VAD or VBR\n"); av_log(avctx, AV_LOG_WARNING, "DTX is not much of use without ABR, VAD or VBR\n");
} }
......
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
#define IIR 1 #define IIR 1
/** filter data */ /** filter data */
typedef struct { typedef struct FilterParams {
uint8_t order; ///< number of taps in filter uint8_t order; ///< number of taps in filter
uint8_t shift; ///< Right shift to apply to output of filter. uint8_t shift; ///< Right shift to apply to output of filter.
...@@ -79,7 +79,7 @@ typedef struct { ...@@ -79,7 +79,7 @@ typedef struct {
} FilterParams; } FilterParams;
/** sample data coding information */ /** sample data coding information */
typedef struct { typedef struct ChannelParams {
FilterParams filter_params[NUM_FILTERS]; FilterParams filter_params[NUM_FILTERS];
int32_t coeff[NUM_FILTERS][MAX_FIR_ORDER]; int32_t coeff[NUM_FILTERS][MAX_FIR_ORDER];
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
#define MPC_FRAME_SIZE (BANDS * SAMPLES_PER_BAND) #define MPC_FRAME_SIZE (BANDS * SAMPLES_PER_BAND)
/** Subband structure - hold all variables for each subband */ /** Subband structure - hold all variables for each subband */
typedef struct { typedef struct Band {
int msf; ///< mid-stereo flag int msf; ///< mid-stereo flag
int res[2]; int res[2];
int scfi[2]; int scfi[2];
...@@ -49,7 +49,7 @@ typedef struct { ...@@ -49,7 +49,7 @@ typedef struct {
int Q[2]; int Q[2];
}Band; }Band;
typedef struct { typedef struct MPCContext {
AVFrame frame; AVFrame frame;
DSPContext dsp; DSPContext dsp;
MPADSPContext mpadsp; MPADSPContext mpadsp;
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#include "get_bits.h" #include "get_bits.h"
#include "put_bits.h" #include "put_bits.h"
typedef struct { typedef struct MPEG4AudioConfig {
int object_type; int object_type;
int sampling_index; int sampling_index;
int sample_rate; int sample_rate;
......
...@@ -83,6 +83,22 @@ static void float_to_int16_altivec(int16_t *dst, const float *src, long len) ...@@ -83,6 +83,22 @@ static void float_to_int16_altivec(int16_t *dst, const float *src, long len)
} }
} }
static void float_to_int16_stride_altivec(int16_t *dst, const float *src,
long len, int stride)
{
int i, j;
vector signed short d, s;
for (i = 0; i < len - 7; i += 8) {
d = float_to_int16_one_altivec(src + i);
for (j = 0; j < 8; j++) {
s = vec_splat(d, j);
vec_ste(s, 0, dst);
dst += stride;
}
}
}
static void float_to_int16_interleave_altivec(int16_t *dst, const float **src, static void float_to_int16_interleave_altivec(int16_t *dst, const float **src,
long len, int channels) long len, int channels)
{ {
...@@ -124,13 +140,8 @@ static void float_to_int16_interleave_altivec(int16_t *dst, const float **src, ...@@ -124,13 +140,8 @@ static void float_to_int16_interleave_altivec(int16_t *dst, const float **src,
} }
} }
} else { } else {
DECLARE_ALIGNED(16, int16_t, tmp)[len]; for (i = 0; i < channels; i++)
int c, j; float_to_int16_stride_altivec(dst + i, src[i], len, channels);
for (c = 0; c < channels; c++) {
float_to_int16_altivec(tmp, src[c], len);
for (i = 0, j = c; i < len; i++, j+=channels)
dst[j] = tmp[i];
}
} }
} }
} }
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
#define PRORES_BITS_PER_SAMPLE 10 ///< output precision of prores decoder #define PRORES_BITS_PER_SAMPLE 10 ///< output precision of prores decoder
typedef struct { typedef struct ProresDSPContext {
int idct_permutation_type; int idct_permutation_type;
uint8_t idct_permutation[64]; uint8_t idct_permutation[64];
int dct_permutation_type; int dct_permutation_type;
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
/** /**
* QCELP unpacked data frame * QCELP unpacked data frame
*/ */
typedef struct { typedef struct QCELPFrame {
/// @name QCELP excitation codebook parameters /// @name QCELP excitation codebook parameters
/// @{ /// @{
uint8_t cbsign[16]; ///< sign of the codebook gain for each codebook subframe uint8_t cbsign[16]; ///< sign of the codebook gain for each codebook subframe
...@@ -73,7 +73,7 @@ typedef struct { ...@@ -73,7 +73,7 @@ typedef struct {
*/ */
static const float qcelp_hammsinc_table[4] = { -0.006822, 0.041249, -0.143459, 0.588863}; static const float qcelp_hammsinc_table[4] = { -0.006822, 0.041249, -0.143459, 0.588863};
typedef struct { typedef struct QCELPBitmap {
uint8_t index; /**< index into the QCELPContext structure */ uint8_t index; /**< index into the QCELPContext structure */
uint8_t bitpos; /**< position of the lowest bit in the value's byte */ uint8_t bitpos; /**< position of the lowest bit in the value's byte */
uint8_t bitlen; /**< number of bits to read */ uint8_t bitlen; /**< number of bits to read */
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
#define FRAMESIZE 20 ///< size of encoded frame #define FRAMESIZE 20 ///< size of encoded frame
#define LPC_ORDER 10 ///< order of LPC filter #define LPC_ORDER 10 ///< order of LPC filter
typedef struct { typedef struct RA144Context {
AVCodecContext *avctx; AVCodecContext *avctx;
AVFrame frame; AVFrame frame;
LPCContext lpc_ctx; LPCContext lpc_ctx;
......
...@@ -32,6 +32,8 @@ ...@@ -32,6 +32,8 @@
#include "libavutil/mem.h" #include "libavutil/mem.h"
#include "libavutil/samplefmt.h" #include "libavutil/samplefmt.h"
#if FF_API_AVCODEC_RESAMPLE
#define MAX_CHANNELS 8 #define MAX_CHANNELS 8
struct AVResampleContext; struct AVResampleContext;
...@@ -429,3 +431,5 @@ void audio_resample_close(ReSampleContext *s) ...@@ -429,3 +431,5 @@ void audio_resample_close(ReSampleContext *s)
av_audio_convert_free(s->convert_ctx[1]); av_audio_convert_free(s->convert_ctx[1]);
av_free(s); av_free(s);
} }
#endif
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
#include "dsputil.h" #include "dsputil.h"
#include "libavutil/common.h" #include "libavutil/common.h"
#if FF_API_AVCODEC_RESAMPLE
#ifndef CONFIG_RESAMPLE_HP #ifndef CONFIG_RESAMPLE_HP
#define FILTER_SHIFT 15 #define FILTER_SHIFT 15
...@@ -321,3 +323,5 @@ av_log(NULL, AV_LOG_DEBUG, "%d %d %d\n", c->dst_incr, c->ideal_dst_incr, c->comp ...@@ -321,3 +323,5 @@ av_log(NULL, AV_LOG_DEBUG, "%d %d %d\n", c->dst_incr, c->ideal_dst_incr, c->comp
return dst_index; return dst_index;
} }
#endif
...@@ -27,16 +27,16 @@ ...@@ -27,16 +27,16 @@
#include "bytestream.h" #include "bytestream.h"
#include "dsputil.h" #include "dsputil.h"
typedef struct { typedef struct roq_cell {
unsigned char y[4]; unsigned char y[4];
unsigned char u, v; unsigned char u, v;
} roq_cell; } roq_cell;
typedef struct { typedef struct roq_qcell {
int idx[4]; int idx[4];
} roq_qcell; } roq_qcell;
typedef struct { typedef struct motion_vect {
int d[2]; int d[2];
} motion_vect; } motion_vect;
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#define RTJPEG_FILE_VERSION 0 #define RTJPEG_FILE_VERSION 0
#define RTJPEG_HEADER_SIZE 12 #define RTJPEG_HEADER_SIZE 12
typedef struct { typedef struct RTJpegContext {
int w, h; int w, h;
DSPContext *dsp; DSPContext *dsp;
uint8_t scan[64]; uint8_t scan[64];
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
/** /**
* Spectral Band Replication header - spectrum parameters that invoke a reset if they differ from the previous header. * Spectral Band Replication header - spectrum parameters that invoke a reset if they differ from the previous header.
*/ */
typedef struct { typedef struct SpectrumParameters {
uint8_t bs_start_freq; uint8_t bs_start_freq;
uint8_t bs_stop_freq; uint8_t bs_stop_freq;
uint8_t bs_xover_band; uint8_t bs_xover_band;
...@@ -57,7 +57,7 @@ typedef struct { ...@@ -57,7 +57,7 @@ typedef struct {
/** /**
* Spectral Band Replication per channel data * Spectral Band Replication per channel data
*/ */
typedef struct { typedef struct SBRData {
/** /**
* @name Main bitstream data variables * @name Main bitstream data variables
* @{ * @{
...@@ -111,7 +111,7 @@ typedef struct { ...@@ -111,7 +111,7 @@ typedef struct {
/** /**
* Spectral Band Replication * Spectral Band Replication
*/ */
typedef struct { typedef struct SpectralBandReplication {
int sample_rate; int sample_rate;
int start; int start;
int reset; int reset;
......
...@@ -94,5 +94,8 @@ ...@@ -94,5 +94,8 @@
#ifndef FF_API_VDA_ASYNC #ifndef FF_API_VDA_ASYNC
#define FF_API_VDA_ASYNC (LIBAVCODEC_VERSION_MAJOR < 55) #define FF_API_VDA_ASYNC (LIBAVCODEC_VERSION_MAJOR < 55)
#endif #endif
#ifndef FF_API_AVCODEC_RESAMPLE
#define FF_API_AVCODEC_RESAMPLE (LIBAVCODEC_VERSION_MAJOR < 55)
#endif
#endif /* AVCODEC_VERSION_H */ #endif /* AVCODEC_VERSION_H */
...@@ -29,7 +29,7 @@ extern const uint8_t ff_vorbis_channel_layout_offsets[8][8]; ...@@ -29,7 +29,7 @@ extern const uint8_t ff_vorbis_channel_layout_offsets[8][8];
extern const uint8_t ff_vorbis_encoding_channel_layout_offsets[8][8]; extern const uint8_t ff_vorbis_encoding_channel_layout_offsets[8][8];
extern const uint64_t ff_vorbis_channel_layouts[9]; extern const uint64_t ff_vorbis_channel_layouts[9];
typedef struct { typedef struct vorbis_floor1_entry {
uint16_t x; uint16_t x;
uint16_t sort; uint16_t sort;
uint16_t low; uint16_t low;
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
typedef struct vp56_context VP56Context; typedef struct vp56_context VP56Context;
typedef struct { typedef struct VP56mv {
DECLARE_ALIGNED(4, int16_t, x); DECLARE_ALIGNED(4, int16_t, x);
int16_t y; int16_t y;
} VP56mv; } VP56mv;
...@@ -52,7 +52,7 @@ typedef int (*VP56ParseCoeffModels)(VP56Context *s); ...@@ -52,7 +52,7 @@ typedef int (*VP56ParseCoeffModels)(VP56Context *s);
typedef int (*VP56ParseHeader)(VP56Context *s, const uint8_t *buf, typedef int (*VP56ParseHeader)(VP56Context *s, const uint8_t *buf,
int buf_size); int buf_size);
typedef struct { typedef struct VP56RangeCoder {
int high; int high;
int bits; /* stored negated (i.e. negative "bits" is a positive number of int bits; /* stored negated (i.e. negative "bits" is a positive number of
bits left) in order to eliminate a negate in cache refilling */ bits left) in order to eliminate a negate in cache refilling */
...@@ -61,18 +61,18 @@ typedef struct { ...@@ -61,18 +61,18 @@ typedef struct {
unsigned int code_word; unsigned int code_word;
} VP56RangeCoder; } VP56RangeCoder;
typedef struct { typedef struct VP56RefDc {
uint8_t not_null_dc; uint8_t not_null_dc;
VP56Frame ref_frame; VP56Frame ref_frame;
DCTELEM dc_coeff; DCTELEM dc_coeff;
} VP56RefDc; } VP56RefDc;
typedef struct { typedef struct VP56Macroblock {
uint8_t type; uint8_t type;
VP56mv mv; VP56mv mv;
} VP56Macroblock; } VP56Macroblock;
typedef struct { typedef struct VP56Model {
uint8_t coeff_reorder[64]; /* used in vp6 only */ uint8_t coeff_reorder[64]; /* used in vp6 only */
uint8_t coeff_index_to_pos[64]; /* used in vp6 only */ uint8_t coeff_index_to_pos[64]; /* used in vp6 only */
uint8_t vector_sig[2]; /* delta sign */ uint8_t vector_sig[2]; /* delta sign */
......
...@@ -51,7 +51,7 @@ typedef enum { ...@@ -51,7 +51,7 @@ typedef enum {
VP56_MB_INTER_V2_GF = 9, /**< Inter MB, second vector, from golden frame */ VP56_MB_INTER_V2_GF = 9, /**< Inter MB, second vector, from golden frame */
} VP56mb; } VP56mb;
typedef struct { typedef struct VP56Tree {
int8_t val; int8_t val;
int8_t prob_idx; int8_t prob_idx;
} VP56Tree; } VP56Tree;
......
...@@ -72,13 +72,13 @@ enum inter_splitmvmode { ...@@ -72,13 +72,13 @@ enum inter_splitmvmode {
VP8_SPLITMVMODE_NONE, ///< (only used in prediction) no split MVs VP8_SPLITMVMODE_NONE, ///< (only used in prediction) no split MVs
}; };
typedef struct { typedef struct VP8FilterStrength {
uint8_t filter_level; uint8_t filter_level;
uint8_t inner_limit; uint8_t inner_limit;
uint8_t inner_filter; uint8_t inner_filter;
} VP8FilterStrength; } VP8FilterStrength;
typedef struct { typedef struct VP8Macroblock {
uint8_t skip; uint8_t skip;
// todo: make it possible to check for at least (i4x4 or split_mv) // todo: make it possible to check for at least (i4x4 or split_mv)
// in one op. are others needed? // in one op. are others needed?
...@@ -93,7 +93,7 @@ typedef struct { ...@@ -93,7 +93,7 @@ typedef struct {
VP56mv bmv[16]; VP56mv bmv[16];
} VP8Macroblock; } VP8Macroblock;
typedef struct { typedef struct VP8ThreadData {
DECLARE_ALIGNED(16, DCTELEM, block)[6][4][16]; DECLARE_ALIGNED(16, DCTELEM, block)[6][4][16];
DECLARE_ALIGNED(16, DCTELEM, block_dc)[16]; DECLARE_ALIGNED(16, DCTELEM, block_dc)[16];
/** /**
...@@ -123,7 +123,7 @@ typedef struct { ...@@ -123,7 +123,7 @@ typedef struct {
} VP8ThreadData; } VP8ThreadData;
#define MAX_THREADS 8 #define MAX_THREADS 8
typedef struct { typedef struct VP8Context {
VP8ThreadData *thread_data; VP8ThreadData *thread_data;
AVCodecContext *avctx; AVCodecContext *avctx;
AVFrame *framep[4]; AVFrame *framep[4];
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
#include "libavutil/internal.h" #include "libavutil/internal.h"
#include "libavutil/mem.h" #include "libavutil/mem.h"
typedef struct { typedef struct pthread_t {
void *handle; void *handle;
void *(*func)(void* arg); void *(*func)(void* arg);
void *arg; void *arg;
...@@ -57,7 +57,7 @@ typedef CRITICAL_SECTION pthread_mutex_t; ...@@ -57,7 +57,7 @@ typedef CRITICAL_SECTION pthread_mutex_t;
/* This is the CONDITIONAL_VARIABLE typedef for using Window's native /* This is the CONDITIONAL_VARIABLE typedef for using Window's native
* conditional variables on kernels 6.0+. * conditional variables on kernels 6.0+.
* MinGW does not currently have this typedef. */ * MinGW does not currently have this typedef. */
typedef struct { typedef struct pthread_cond_t {
void *ptr; void *ptr;
} pthread_cond_t; } pthread_cond_t;
...@@ -118,7 +118,7 @@ static inline int pthread_mutex_unlock(pthread_mutex_t *m) ...@@ -118,7 +118,7 @@ static inline int pthread_mutex_unlock(pthread_mutex_t *m)
/* for pre-Windows 6.0 platforms we need to define and use our own condition /* for pre-Windows 6.0 platforms we need to define and use our own condition
* variable and api */ * variable and api */
typedef struct { typedef struct win32_cond_t {
pthread_mutex_t mtx_broadcast; pthread_mutex_t mtx_broadcast;
pthread_mutex_t mtx_waiter_count; pthread_mutex_t mtx_waiter_count;
volatile int waiter_count; volatile int waiter_count;
......
...@@ -1929,15 +1929,10 @@ static av_noinline void emulated_edge_mc_sse(uint8_t *buf, const uint8_t *src, ...@@ -1929,15 +1929,10 @@ static av_noinline void emulated_edge_mc_sse(uint8_t *buf, const uint8_t *src,
#if HAVE_INLINE_ASM #if HAVE_INLINE_ASM
typedef void emulated_edge_mc_func(uint8_t *dst, const uint8_t *src, static void gmc_mmx(uint8_t *dst, uint8_t *src,
int linesize, int block_w, int block_h,
int src_x, int src_y, int w, int h);
static av_always_inline void gmc(uint8_t *dst, uint8_t *src,
int stride, int h, int ox, int oy, int stride, int h, int ox, int oy,
int dxx, int dxy, int dyx, int dyy, int dxx, int dxy, int dyx, int dyy,
int shift, int r, int width, int height, int shift, int r, int width, int height)
emulated_edge_mc_func *emu_edge_fn)
{ {
const int w = 8; const int w = 8;
const int ix = ox >> (16 + shift); const int ix = ox >> (16 + shift);
...@@ -1952,7 +1947,6 @@ static av_always_inline void gmc(uint8_t *dst, uint8_t *src, ...@@ -1952,7 +1947,6 @@ static av_always_inline void gmc(uint8_t *dst, uint8_t *src,
const uint16_t dxy4[4] = { dxys, dxys, dxys, dxys }; const uint16_t dxy4[4] = { dxys, dxys, dxys, dxys };
const uint16_t dyy4[4] = { dyys, dyys, dyys, dyys }; const uint16_t dyy4[4] = { dyys, dyys, dyys, dyys };
const uint64_t shift2 = 2 * shift; const uint64_t shift2 = 2 * shift;
uint8_t edge_buf[(h + 1) * stride];
int x, y; int x, y;
const int dxw = (dxx - (1 << (16 + shift))) * (w - 1); const int dxw = (dxx - (1 << (16 + shift))) * (w - 1);
...@@ -1963,7 +1957,9 @@ static av_always_inline void gmc(uint8_t *dst, uint8_t *src, ...@@ -1963,7 +1957,9 @@ static av_always_inline void gmc(uint8_t *dst, uint8_t *src,
((ox ^ (ox + dxw)) | (ox ^ (ox + dxh)) | (ox ^ (ox + dxw + dxh)) | ((ox ^ (ox + dxw)) | (ox ^ (ox + dxh)) | (ox ^ (ox + dxw + dxh)) |
(oy ^ (oy + dyw)) | (oy ^ (oy + dyh)) | (oy ^ (oy + dyw + dyh))) >> (16 + shift) (oy ^ (oy + dyw)) | (oy ^ (oy + dyh)) | (oy ^ (oy + dyw + dyh))) >> (16 + shift)
// uses more than 16 bits of subpel mv (only at huge resolution) // uses more than 16 bits of subpel mv (only at huge resolution)
|| (dxx | dxy | dyx | dyy) & 15) { || (dxx | dxy | dyx | dyy) & 15 ||
(unsigned)ix >= width - w ||
(unsigned)iy >= height - h) {
// FIXME could still use mmx for some of the rows // FIXME could still use mmx for some of the rows
ff_gmc_c(dst, src, stride, h, ox, oy, dxx, dxy, dyx, dyy, ff_gmc_c(dst, src, stride, h, ox, oy, dxx, dxy, dyx, dyy,
shift, r, width, height); shift, r, width, height);
...@@ -1971,11 +1967,6 @@ static av_always_inline void gmc(uint8_t *dst, uint8_t *src, ...@@ -1971,11 +1967,6 @@ static av_always_inline void gmc(uint8_t *dst, uint8_t *src,
} }
src += ix + iy * stride; src += ix + iy * stride;
if ((unsigned)ix >= width - w ||
(unsigned)iy >= height - h) {
emu_edge_fn(edge_buf, src, stride, w + 1, h + 1, ix, iy, width, height);
src = edge_buf;
}
__asm__ volatile ( __asm__ volatile (
"movd %0, %%mm6 \n\t" "movd %0, %%mm6 \n\t"
...@@ -2054,36 +2045,6 @@ static av_always_inline void gmc(uint8_t *dst, uint8_t *src, ...@@ -2054,36 +2045,6 @@ static av_always_inline void gmc(uint8_t *dst, uint8_t *src,
} }
} }
#if HAVE_YASM
#if ARCH_X86_32
static void gmc_mmx(uint8_t *dst, uint8_t *src,
int stride, int h, int ox, int oy,
int dxx, int dxy, int dyx, int dyy,
int shift, int r, int width, int height)
{
gmc(dst, src, stride, h, ox, oy, dxx, dxy, dyx, dyy, shift, r,
width, height, &emulated_edge_mc_mmx);
}
#endif
static void gmc_sse(uint8_t *dst, uint8_t *src,
int stride, int h, int ox, int oy,
int dxx, int dxy, int dyx, int dyy,
int shift, int r, int width, int height)
{
gmc(dst, src, stride, h, ox, oy, dxx, dxy, dyx, dyy, shift, r,
width, height, &emulated_edge_mc_sse);
}
#else
static void gmc_mmx(uint8_t *dst, uint8_t *src,
int stride, int h, int ox, int oy,
int dxx, int dxy, int dyx, int dyy,
int shift, int r, int width, int height)
{
gmc(dst, src, stride, h, ox, oy, dxx, dxy, dyx, dyy, shift, r,
width, height, &ff_emulated_edge_mc_8);
}
#endif
#define PREFETCH(name, op) \ #define PREFETCH(name, op) \
static void name(void *mem, int stride, int h) \ static void name(void *mem, int stride, int h) \
{ \ { \
...@@ -2584,9 +2545,7 @@ static void dsputil_init_mmx(DSPContext *c, AVCodecContext *avctx, int mm_flags) ...@@ -2584,9 +2545,7 @@ static void dsputil_init_mmx(DSPContext *c, AVCodecContext *avctx, int mm_flags)
SET_HPEL_FUNCS(avg_no_rnd, 1, 8, mmx); SET_HPEL_FUNCS(avg_no_rnd, 1, 8, mmx);
} }
#if ARCH_X86_32 || !HAVE_YASM
c->gmc = gmc_mmx; c->gmc = gmc_mmx;
#endif
c->add_bytes = add_bytes_mmx; c->add_bytes = add_bytes_mmx;
...@@ -2841,9 +2800,6 @@ static void dsputil_init_sse(DSPContext *c, AVCodecContext *avctx, int mm_flags) ...@@ -2841,9 +2800,6 @@ static void dsputil_init_sse(DSPContext *c, AVCodecContext *avctx, int mm_flags)
if (!high_bit_depth) if (!high_bit_depth)
c->emulated_edge_mc = emulated_edge_mc_sse; c->emulated_edge_mc = emulated_edge_mc_sse;
#if HAVE_INLINE_ASM
c->gmc = gmc_sse;
#endif
#endif /* HAVE_YASM */ #endif /* HAVE_YASM */
} }
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#include "libavcodec/dsputil.h" #include "libavcodec/dsputil.h"
#include "libavutil/x86/asm.h" #include "libavutil/x86/asm.h"
typedef struct { uint64_t a, b; } xmm_reg; typedef struct xmm_reg { uint64_t a, b; } xmm_reg;
extern const uint64_t ff_bone; extern const uint64_t ff_bone;
extern const uint64_t ff_wtwo; extern const uint64_t ff_wtwo;
......
...@@ -45,7 +45,7 @@ typedef void (*ff_reorder_func)(const void *, void *, int); ...@@ -45,7 +45,7 @@ typedef void (*ff_reorder_func)(const void *, void *, int);
#define ALSA_BUFFER_SIZE_MAX 65536 #define ALSA_BUFFER_SIZE_MAX 65536
typedef struct { typedef struct AlsaData {
AVClass *class; AVClass *class;
snd_pcm_t *h; snd_pcm_t *h;
int frame_size; ///< bytes per sample * channels int frame_size; ///< bytes per sample * channels
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include "libavutil/log.h" #include "libavutil/log.h"
#include "avdevice.h" #include "avdevice.h"
typedef struct { typedef struct SndioData {
AVClass *class; AVClass *class;
struct sio_hdl *hdl; struct sio_hdl *hdl;
enum AVCodecID codec_id; enum AVCodecID codec_id;
......
...@@ -127,7 +127,7 @@ static int request_frame(AVFilterLink *link) ...@@ -127,7 +127,7 @@ static int request_frame(AVFilterLink *link)
nb_samples); nb_samples);
if (!buf) if (!buf)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
ret = avresample_convert(s->avr, (void**)buf->extended_data, ret = avresample_convert(s->avr, buf->extended_data,
buf->linesize[0], nb_samples, NULL, 0, 0); buf->linesize[0], nb_samples, NULL, 0, 0);
if (ret <= 0) { if (ret <= 0) {
avfilter_unref_bufferp(&buf); avfilter_unref_bufferp(&buf);
...@@ -143,7 +143,7 @@ static int request_frame(AVFilterLink *link) ...@@ -143,7 +143,7 @@ static int request_frame(AVFilterLink *link)
static int write_to_fifo(ASyncContext *s, AVFilterBufferRef *buf) static int write_to_fifo(ASyncContext *s, AVFilterBufferRef *buf)
{ {
int ret = avresample_convert(s->avr, NULL, 0, 0, (void**)buf->extended_data, int ret = avresample_convert(s->avr, NULL, 0, 0, buf->extended_data,
buf->linesize[0], buf->audio->nb_samples); buf->linesize[0], buf->audio->nb_samples);
avfilter_unref_buffer(buf); avfilter_unref_buffer(buf);
return ret; return ret;
...@@ -204,7 +204,7 @@ static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *buf) ...@@ -204,7 +204,7 @@ static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *buf)
goto fail; goto fail;
} }
avresample_read(s->avr, (void**)buf_out->extended_data, out_size); avresample_read(s->avr, buf_out->extended_data, out_size);
buf_out->pts = s->pts; buf_out->pts = s->pts;
if (delta > 0) { if (delta > 0) {
...@@ -224,7 +224,7 @@ static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *buf) ...@@ -224,7 +224,7 @@ static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *buf)
avresample_read(s->avr, NULL, avresample_available(s->avr)); avresample_read(s->avr, NULL, avresample_available(s->avr));
s->pts = pts - avresample_get_delay(s->avr); s->pts = pts - avresample_get_delay(s->avr);
ret = avresample_convert(s->avr, NULL, 0, 0, (void**)buf->extended_data, ret = avresample_convert(s->avr, NULL, 0, 0, buf->extended_data,
buf->linesize[0], buf->audio->nb_samples); buf->linesize[0], buf->audio->nb_samples);
fail: fail:
......
...@@ -149,7 +149,7 @@ static int request_frame(AVFilterLink *outlink) ...@@ -149,7 +149,7 @@ static int request_frame(AVFilterLink *outlink)
if (!buf) if (!buf)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
ret = avresample_convert(s->avr, (void**)buf->extended_data, ret = avresample_convert(s->avr, buf->extended_data,
buf->linesize[0], nb_samples, buf->linesize[0], nb_samples,
NULL, 0, 0); NULL, 0, 0);
if (ret <= 0) { if (ret <= 0) {
...@@ -186,9 +186,9 @@ static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *buf) ...@@ -186,9 +186,9 @@ static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *buf)
goto fail; goto fail;
} }
ret = avresample_convert(s->avr, (void**)buf_out->extended_data, ret = avresample_convert(s->avr, buf_out->extended_data,
buf_out->linesize[0], nb_samples, buf_out->linesize[0], nb_samples,
(void**)buf->extended_data, buf->linesize[0], buf->extended_data, buf->linesize[0],
buf->audio->nb_samples); buf->audio->nb_samples);
if (ret < 0) { if (ret < 0) {
avfilter_unref_buffer(buf_out); avfilter_unref_buffer(buf_out);
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#include "avfilter.h" #include "avfilter.h"
/// Holds instance-specific information for gradfun. /// Holds instance-specific information for gradfun.
typedef struct { typedef struct GradFunContext {
int thresh; ///< threshold for gradient algorithm int thresh; ///< threshold for gradient algorithm
int radius; ///< blur radius int radius; ///< blur radius
int chroma_w; ///< width of the chroma planes int chroma_w; ///< width of the chroma planes
......
...@@ -126,9 +126,9 @@ static int config_input(AVFilterLink *inlink) ...@@ -126,9 +126,9 @@ static int config_input(AVFilterLink *inlink)
var_values[VAR_IN_H] = var_values[VAR_IH] = inlink->h; var_values[VAR_IN_H] = var_values[VAR_IH] = inlink->h;
var_values[VAR_OUT_W] = var_values[VAR_OW] = NAN; var_values[VAR_OUT_W] = var_values[VAR_OW] = NAN;
var_values[VAR_OUT_H] = var_values[VAR_OH] = NAN; var_values[VAR_OUT_H] = var_values[VAR_OH] = NAN;
var_values[VAR_A] = (float) inlink->w / inlink->h; var_values[VAR_A] = (double) inlink->w / inlink->h;
var_values[VAR_SAR] = inlink->sample_aspect_ratio.num ? var_values[VAR_SAR] = inlink->sample_aspect_ratio.num ?
(float) inlink->sample_aspect_ratio.num / inlink->sample_aspect_ratio.den : 1; (double) inlink->sample_aspect_ratio.num / inlink->sample_aspect_ratio.den : 1;
var_values[VAR_DAR] = var_values[VAR_A] * var_values[VAR_SAR]; var_values[VAR_DAR] = var_values[VAR_A] * var_values[VAR_SAR];
var_values[VAR_HSUB] = 1 << pad->draw.hsub_max; var_values[VAR_HSUB] = 1 << pad->draw.hsub_max;
var_values[VAR_VSUB] = 1 << pad->draw.vsub_max; var_values[VAR_VSUB] = 1 << pad->draw.vsub_max;
......
...@@ -172,9 +172,9 @@ static int config_props(AVFilterLink *outlink) ...@@ -172,9 +172,9 @@ static int config_props(AVFilterLink *outlink)
var_values[VAR_IN_H] = var_values[VAR_IH] = inlink->h; var_values[VAR_IN_H] = var_values[VAR_IH] = inlink->h;
var_values[VAR_OUT_W] = var_values[VAR_OW] = NAN; var_values[VAR_OUT_W] = var_values[VAR_OW] = NAN;
var_values[VAR_OUT_H] = var_values[VAR_OH] = NAN; var_values[VAR_OUT_H] = var_values[VAR_OH] = NAN;
var_values[VAR_A] = (float) inlink->w / inlink->h; var_values[VAR_A] = (double) inlink->w / inlink->h;
var_values[VAR_SAR] = inlink->sample_aspect_ratio.num ? var_values[VAR_SAR] = inlink->sample_aspect_ratio.num ?
(float) inlink->sample_aspect_ratio.num / inlink->sample_aspect_ratio.den : 1; (double) inlink->sample_aspect_ratio.num / inlink->sample_aspect_ratio.den : 1;
var_values[VAR_DAR] = var_values[VAR_A] * var_values[VAR_SAR]; var_values[VAR_DAR] = var_values[VAR_A] * var_values[VAR_SAR];
var_values[VAR_HSUB] = 1<<av_pix_fmt_descriptors[inlink->format].log2_chroma_w; var_values[VAR_HSUB] = 1<<av_pix_fmt_descriptors[inlink->format].log2_chroma_w;
var_values[VAR_VSUB] = 1<<av_pix_fmt_descriptors[inlink->format].log2_chroma_h; var_values[VAR_VSUB] = 1<<av_pix_fmt_descriptors[inlink->format].log2_chroma_h;
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
#include "libavutil/pixdesc.h" #include "libavutil/pixdesc.h"
#include "avfilter.h" #include "avfilter.h"
typedef struct { typedef struct YADIFContext {
/** /**
* 0: send 1 frame for each frame * 0: send 1 frame for each frame
* 1: send 1 frame for each field * 1: send 1 frame for each field
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#define PACKET_SIZE 3200 #define PACKET_SIZE 3200
typedef struct { typedef struct ASFStream {
int num; int num;
unsigned char seq; unsigned char seq;
/* use for reading */ /* use for reading */
...@@ -49,7 +49,7 @@ typedef struct { ...@@ -49,7 +49,7 @@ typedef struct {
uint32_t palette[256]; uint32_t palette[256];
} ASFStream; } ASFStream;
typedef struct { typedef struct ASFMainHeader {
ff_asf_guid guid; ///< generated by client computer ff_asf_guid guid; ///< generated by client computer
uint64_t file_size; /**< in bytes uint64_t file_size; /**< in bytes
* invalid if broadcasting */ * invalid if broadcasting */
...@@ -75,7 +75,7 @@ typedef struct { ...@@ -75,7 +75,7 @@ typedef struct {
} ASFMainHeader; } ASFMainHeader;
typedef struct { typedef struct ASFIndex {
uint32_t packet_number; uint32_t packet_number;
uint16_t packet_count; uint16_t packet_count;
} ASFIndex; } ASFIndex;
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#include "libavutil/fifo.h" #include "libavutil/fifo.h"
#include "avformat.h" #include "avformat.h"
typedef struct { typedef struct AudioInterleaveContext {
AVFifoBuffer *fifo; AVFifoBuffer *fifo;
unsigned fifo_size; ///< size of currently allocated FIFO unsigned fifo_size; ///< size of currently allocated FIFO
uint64_t dts; ///< current dts uint64_t dts; ///< current dts
......
...@@ -32,7 +32,7 @@ typedef enum HTTPAuthType { ...@@ -32,7 +32,7 @@ typedef enum HTTPAuthType {
HTTP_AUTH_DIGEST, /**< HTTP 1.1 Digest auth from RFC 2617 */ HTTP_AUTH_DIGEST, /**< HTTP 1.1 Digest auth from RFC 2617 */
} HTTPAuthType; } HTTPAuthType;
typedef struct { typedef struct DigestParams {
char nonce[300]; /**< Server specified nonce */ char nonce[300]; /**< Server specified nonce */
char algorithm[10]; /**< Server specified digest algorithm */ char algorithm[10]; /**< Server specified digest algorithm */
char qop[30]; /**< Quality of protection, containing the one char qop[30]; /**< Quality of protection, containing the one
...@@ -52,7 +52,7 @@ typedef struct { ...@@ -52,7 +52,7 @@ typedef struct {
* HTTP Authentication state structure. Must be zero-initialized * HTTP Authentication state structure. Must be zero-initialized
* before used with the functions below. * before used with the functions below.
*/ */
typedef struct { typedef struct HTTPAuthState {
/** /**
* The currently chosen auth type. * The currently chosen auth type.
*/ */
......
...@@ -42,18 +42,18 @@ int ff_mov_lang_to_iso639(unsigned code, char to[4]); ...@@ -42,18 +42,18 @@ int ff_mov_lang_to_iso639(unsigned code, char to[4]);
* Here we just use what is needed to read the chunks * Here we just use what is needed to read the chunks
*/ */
typedef struct { typedef struct MOVStts {
int count; int count;
int duration; int duration;
} MOVStts; } MOVStts;
typedef struct { typedef struct MOVStsc {
int first; int first;
int count; int count;
int id; int id;
} MOVStsc; } MOVStsc;
typedef struct { typedef struct MOVDref {
uint32_t type; uint32_t type;
char *path; char *path;
char *dir; char *dir;
...@@ -62,14 +62,14 @@ typedef struct { ...@@ -62,14 +62,14 @@ typedef struct {
int16_t nlvl_to, nlvl_from; int16_t nlvl_to, nlvl_from;
} MOVDref; } MOVDref;
typedef struct { typedef struct MOVAtom {
uint32_t type; uint32_t type;
int64_t size; /* total size (excluding the size and type fields) */ int64_t size; /* total size (excluding the size and type fields) */
} MOVAtom; } MOVAtom;
struct MOVParseTableEntry; struct MOVParseTableEntry;
typedef struct { typedef struct MOVFragment {
unsigned track_id; unsigned track_id;
uint64_t base_data_offset; uint64_t base_data_offset;
uint64_t moof_offset; uint64_t moof_offset;
...@@ -79,7 +79,7 @@ typedef struct { ...@@ -79,7 +79,7 @@ typedef struct {
unsigned flags; unsigned flags;
} MOVFragment; } MOVFragment;
typedef struct { typedef struct MOVTrackExt {
unsigned track_id; unsigned track_id;
unsigned stsd_id; unsigned stsd_id;
unsigned duration; unsigned duration;
...@@ -87,7 +87,7 @@ typedef struct { ...@@ -87,7 +87,7 @@ typedef struct {
unsigned flags; unsigned flags;
} MOVTrackExt; } MOVTrackExt;
typedef struct { typedef struct MOVSbgp {
unsigned int count; unsigned int count;
unsigned int index; unsigned int index;
} MOVSbgp; } MOVSbgp;
......
...@@ -23,11 +23,11 @@ ...@@ -23,11 +23,11 @@
#include "url.h" #include "url.h"
typedef struct { typedef struct MMSStream {
int id; int id;
}MMSStream; }MMSStream;
typedef struct { typedef struct MMSContext {
URLContext *mms_hd; ///< TCP connection handle URLContext *mms_hd; ///< TCP connection handle
MMSStream *streams; MMSStream *streams;
......
...@@ -62,13 +62,13 @@ typedef struct HintSample { ...@@ -62,13 +62,13 @@ typedef struct HintSample {
int own_data; int own_data;
} HintSample; } HintSample;
typedef struct { typedef struct HintSampleQueue {
int size; int size;
int len; int len;
HintSample *samples; HintSample *samples;
} HintSampleQueue; } HintSampleQueue;
typedef struct { typedef struct MOVFragmentInfo {
int64_t offset; int64_t offset;
int64_t time; int64_t time;
int64_t duration; int64_t duration;
......
...@@ -65,7 +65,7 @@ int ff_mpegts_parse_packet(MpegTSContext *ts, AVPacket *pkt, ...@@ -65,7 +65,7 @@ int ff_mpegts_parse_packet(MpegTSContext *ts, AVPacket *pkt,
const uint8_t *buf, int len); const uint8_t *buf, int len);
void ff_mpegts_parse_close(MpegTSContext *ts); void ff_mpegts_parse_close(MpegTSContext *ts);
typedef struct { typedef struct SLConfigDescr {
int use_au_start; int use_au_start;
int use_au_end; int use_au_end;
int use_rand_acc_pt; int use_rand_acc_pt;
...@@ -82,7 +82,7 @@ typedef struct { ...@@ -82,7 +82,7 @@ typedef struct {
int packet_seq_num_len; int packet_seq_num_len;
} SLConfigDescr; } SLConfigDescr;
typedef struct { typedef struct Mp4Descr {
int es_id; int es_id;
int dec_config_descr_len; int dec_config_descr_len;
uint8_t *dec_config_descr; uint8_t *dec_config_descr;
......
...@@ -55,13 +55,13 @@ enum MXFFrameLayout { ...@@ -55,13 +55,13 @@ enum MXFFrameLayout {
SegmentedFrame, SegmentedFrame,
}; };
typedef struct { typedef struct KLVPacket {
UID key; UID key;
int64_t offset; int64_t offset;
uint64_t length; uint64_t length;
} KLVPacket; } KLVPacket;
typedef struct { typedef struct MXFCodecUL {
UID uid; UID uid;
unsigned matching_len; unsigned matching_len;
int id; int id;
......
...@@ -53,14 +53,14 @@ typedef enum{ ...@@ -53,14 +53,14 @@ typedef enum{
FLAG_INVALID =8192, ///<if set, frame_code is invalid FLAG_INVALID =8192, ///<if set, frame_code is invalid
} Flag; } Flag;
typedef struct { typedef struct Syncpoint {
uint64_t pos; uint64_t pos;
uint64_t back_ptr; uint64_t back_ptr;
// uint64_t global_key_pts; // uint64_t global_key_pts;
int64_t ts; int64_t ts;
} Syncpoint; } Syncpoint;
typedef struct { typedef struct FrameCode {
uint16_t flags; uint16_t flags;
uint8_t stream_id; uint8_t stream_id;
uint16_t size_mul; uint16_t size_mul;
...@@ -70,7 +70,7 @@ typedef struct { ...@@ -70,7 +70,7 @@ typedef struct {
uint8_t header_idx; uint8_t header_idx;
} FrameCode; } FrameCode;
typedef struct { typedef struct StreamContext {
int last_flags; int last_flags;
int skip_until_key_frame; int skip_until_key_frame;
int64_t last_pts; int64_t last_pts;
...@@ -82,11 +82,11 @@ typedef struct { ...@@ -82,11 +82,11 @@ typedef struct {
int64_t *keyframe_pts; int64_t *keyframe_pts;
} StreamContext; } StreamContext;
typedef struct { typedef struct ChapterContext {
AVRational *time_base; AVRational *time_base;
} ChapterContext; } ChapterContext;
typedef struct { typedef struct NUTContext {
AVFormatContext *avf; AVFormatContext *avf;
// int written_packet_size; // int written_packet_size;
// int64_t packet_start; // int64_t packet_start;
...@@ -110,7 +110,7 @@ typedef struct { ...@@ -110,7 +110,7 @@ typedef struct {
extern const AVCodecTag ff_nut_subtitle_tags[]; extern const AVCodecTag ff_nut_subtitle_tags[];
extern const AVCodecTag ff_nut_video_tags[]; extern const AVCodecTag ff_nut_video_tags[];
typedef struct { typedef struct Dispositions {
char str[9]; char str[9];
int flag; int flag;
} Dispositions; } Dispositions;
......
...@@ -72,7 +72,7 @@ void ff_rtp_send_punch_packets(URLContext* rtp_handle); ...@@ -72,7 +72,7 @@ void ff_rtp_send_punch_packets(URLContext* rtp_handle);
int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, int count); int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, int count);
// these statistics are used for rtcp receiver reports... // these statistics are used for rtcp receiver reports...
typedef struct { typedef struct RTPStatistics {
uint16_t max_seq; ///< highest sequence number seen uint16_t max_seq; ///< highest sequence number seen
uint32_t cycles; ///< shifted count of sequence number cycles uint32_t cycles; ///< shifted count of sequence number cycles
uint32_t base_seq; ///< base sequence number uint32_t base_seq; ///< base sequence number
......
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
#undef NDEBUG #undef NDEBUG
#include <assert.h> #include <assert.h>
typedef struct { typedef struct SWFContext {
int64_t duration_pos; int64_t duration_pos;
int64_t tag_pos; int64_t tag_pos;
int64_t vframes_pos; int64_t vframes_pos;
......
...@@ -497,7 +497,7 @@ static int yuv4_read_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -497,7 +497,7 @@ static int yuv4_read_packet(AVFormatContext *s, AVPacket *pkt)
{ {
int i; int i;
char header[MAX_FRAME_HEADER+1]; char header[MAX_FRAME_HEADER+1];
int packet_size, width, height; int packet_size, width, height, ret;
AVStream *st = s->streams[0]; AVStream *st = s->streams[0];
struct frame_attributes *s1 = s->priv_data; struct frame_attributes *s1 = s->priv_data;
...@@ -508,20 +508,28 @@ static int yuv4_read_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -508,20 +508,28 @@ static int yuv4_read_packet(AVFormatContext *s, AVPacket *pkt)
break; break;
} }
} }
if (i == MAX_FRAME_HEADER) if (s->pb->error)
return -1; return s->pb->error;
else if (s->pb->eof_reached)
return AVERROR_EOF;
else if (i == MAX_FRAME_HEADER)
return AVERROR_INVALIDDATA;
if (strncmp(header, Y4M_FRAME_MAGIC, strlen(Y4M_FRAME_MAGIC))) if (strncmp(header, Y4M_FRAME_MAGIC, strlen(Y4M_FRAME_MAGIC)))
return -1; return AVERROR_INVALIDDATA;
width = st->codec->width; width = st->codec->width;
height = st->codec->height; height = st->codec->height;
packet_size = avpicture_get_size(st->codec->pix_fmt, width, height); packet_size = avpicture_get_size(st->codec->pix_fmt, width, height);
if (packet_size < 0) if (packet_size < 0)
return -1; return packet_size;
if (av_get_packet(s->pb, pkt, packet_size) != packet_size) ret = av_get_packet(s->pb, pkt, packet_size);
return AVERROR(EIO); if (ret < 0)
return ret;
else if (ret != packet_size)
return s->pb->eof_reached ? AVERROR_EOF : AVERROR(EIO);
if (st->codec->coded_frame) { if (st->codec->coded_frame) {
st->codec->coded_frame->interlaced_frame = s1->interlaced_frame; st->codec->coded_frame->interlaced_frame = s1->interlaced_frame;
......
...@@ -62,7 +62,7 @@ int ff_audio_data_set_channels(AudioData *a, int channels) ...@@ -62,7 +62,7 @@ int ff_audio_data_set_channels(AudioData *a, int channels)
return 0; return 0;
} }
int ff_audio_data_init(AudioData *a, void **src, int plane_size, int channels, int ff_audio_data_init(AudioData *a, uint8_t **src, int plane_size, int channels,
int nb_samples, enum AVSampleFormat sample_fmt, int nb_samples, enum AVSampleFormat sample_fmt,
int read_only, const char *name) int read_only, const char *name)
{ {
......
...@@ -73,7 +73,7 @@ int ff_audio_data_set_channels(AudioData *a, int channels); ...@@ -73,7 +73,7 @@ int ff_audio_data_set_channels(AudioData *a, int channels);
* @param name name for debug logging (can be NULL) * @param name name for debug logging (can be NULL)
* @return 0 on success, negative AVERROR value on error * @return 0 on success, negative AVERROR value on error
*/ */
int ff_audio_data_init(AudioData *a, void **src, int plane_size, int channels, int ff_audio_data_init(AudioData *a, uint8_t **src, int plane_size, int channels,
int nb_samples, enum AVSampleFormat sample_fmt, int nb_samples, enum AVSampleFormat sample_fmt,
int read_only, const char *name); int read_only, const char *name);
......
...@@ -305,8 +305,8 @@ int main(int argc, char **argv) ...@@ -305,8 +305,8 @@ int main(int argc, char **argv)
goto end; goto end;
} }
ret = avresample_convert(s, (void **)out_data, out_linesize, out_rate * 6, ret = avresample_convert(s, out_data, out_linesize, out_rate * 6,
(void **) in_data, in_linesize, in_rate * 6); in_data, in_linesize, in_rate * 6);
if (ret < 0) { if (ret < 0) {
char errbuf[256]; char errbuf[256];
av_strerror(ret, errbuf, sizeof(errbuf)); av_strerror(ret, errbuf, sizeof(errbuf));
......
...@@ -234,8 +234,8 @@ int avresample_set_compensation(AVAudioResampleContext *avr, int sample_delta, ...@@ -234,8 +234,8 @@ int avresample_set_compensation(AVAudioResampleContext *avr, int sample_delta,
* not including converted samples added to the internal * not including converted samples added to the internal
* output FIFO * output FIFO
*/ */
int avresample_convert(AVAudioResampleContext *avr, void **output, int avresample_convert(AVAudioResampleContext *avr, uint8_t **output,
int out_plane_size, int out_samples, void **input, int out_plane_size, int out_samples, uint8_t **input,
int in_plane_size, int in_samples); int in_plane_size, int in_samples);
/** /**
...@@ -287,6 +287,6 @@ int avresample_available(AVAudioResampleContext *avr); ...@@ -287,6 +287,6 @@ int avresample_available(AVAudioResampleContext *avr);
* @param nb_samples number of samples to read from the FIFO * @param nb_samples number of samples to read from the FIFO
* @return the number of samples written to output * @return the number of samples written to output
*/ */
int avresample_read(AVAudioResampleContext *avr, void **output, int nb_samples); int avresample_read(AVAudioResampleContext *avr, uint8_t **output, int nb_samples);
#endif /* AVRESAMPLE_AVRESAMPLE_H */ #endif /* AVRESAMPLE_AVRESAMPLE_H */
...@@ -247,8 +247,8 @@ static int handle_buffered_output(AVAudioResampleContext *avr, ...@@ -247,8 +247,8 @@ static int handle_buffered_output(AVAudioResampleContext *avr,
} }
int attribute_align_arg avresample_convert(AVAudioResampleContext *avr, int attribute_align_arg avresample_convert(AVAudioResampleContext *avr,
void **output, int out_plane_size, uint8_t **output, int out_plane_size,
int out_samples, void **input, int out_samples, uint8_t **input,
int in_plane_size, int in_samples) int in_plane_size, int in_samples)
{ {
AudioData input_buffer; AudioData input_buffer;
...@@ -410,11 +410,11 @@ int avresample_available(AVAudioResampleContext *avr) ...@@ -410,11 +410,11 @@ int avresample_available(AVAudioResampleContext *avr)
return av_audio_fifo_size(avr->out_fifo); return av_audio_fifo_size(avr->out_fifo);
} }
int avresample_read(AVAudioResampleContext *avr, void **output, int nb_samples) int avresample_read(AVAudioResampleContext *avr, uint8_t **output, int nb_samples)
{ {
if (!output) if (!output)
return av_audio_fifo_drain(avr->out_fifo, nb_samples); return av_audio_fifo_drain(avr->out_fifo, nb_samples);
return av_audio_fifo_read(avr->out_fifo, output, nb_samples); return av_audio_fifo_read(avr->out_fifo, (void**)output, nb_samples);
} }
unsigned avresample_version(void) unsigned avresample_version(void)
......
...@@ -19,9 +19,9 @@ ...@@ -19,9 +19,9 @@
#ifndef AVRESAMPLE_VERSION_H #ifndef AVRESAMPLE_VERSION_H
#define AVRESAMPLE_VERSION_H #define AVRESAMPLE_VERSION_H
#define LIBAVRESAMPLE_VERSION_MAJOR 0 #define LIBAVRESAMPLE_VERSION_MAJOR 1
#define LIBAVRESAMPLE_VERSION_MINOR 0 #define LIBAVRESAMPLE_VERSION_MINOR 0
#define LIBAVRESAMPLE_VERSION_MICRO 3 #define LIBAVRESAMPLE_VERSION_MICRO 0
#define LIBAVRESAMPLE_VERSION_INT AV_VERSION_INT(LIBAVRESAMPLE_VERSION_MAJOR, \ #define LIBAVRESAMPLE_VERSION_INT AV_VERSION_INT(LIBAVRESAMPLE_VERSION_MAJOR, \
LIBAVRESAMPLE_VERSION_MINOR, \ LIBAVRESAMPLE_VERSION_MINOR, \
......
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
#define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no #define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no
delimiter is added, the strings are simply concatenated. */ delimiter is added, the strings are simply concatenated. */
typedef struct { typedef struct AVDictionaryEntry {
char *key; char *key;
char *value; char *value;
} AVDictionaryEntry; } AVDictionaryEntry;
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
#ifndef AVUTIL_LFG_H #ifndef AVUTIL_LFG_H
#define AVUTIL_LFG_H #define AVUTIL_LFG_H
typedef struct { typedef struct AVLFG {
unsigned int state[64]; unsigned int state[64];
int index; int index;
} AVLFG; } AVLFG;
......
...@@ -32,78 +32,37 @@ ...@@ -32,78 +32,37 @@
#define vzero vec_splat_s32(0) #define vzero vec_splat_s32(0)
static inline void altivec_packIntArrayToCharArray(int *val, uint8_t *dest, #define yuv2planeX_8(d1, d2, l1, src, x, perm, filter) do { \
int dstW) vector signed short l2 = vec_ld(((x) << 1) + 16, src); \
vector signed short ls = vec_perm(l1, l2, perm); \
vector signed int i1 = vec_mule(filter, ls); \
vector signed int i2 = vec_mulo(filter, ls); \
vector signed int vf1 = vec_mergeh(i1, i2); \
vector signed int vf2 = vec_mergel(i1, i2); \
d1 = vec_add(d1, vf1); \
d2 = vec_add(d2, vf2); \
l1 = l2; \
} while (0)
static void yuv2planeX_16_altivec(const int16_t *filter, int filterSize,
const int16_t **src, uint8_t *dest,
const uint8_t *dither, int offset, int x)
{ {
register int i; register int i, j;
DECLARE_ALIGNED(16, int, val)[16];
vector signed int vo1, vo2, vo3, vo4;
vector unsigned short vs1, vs2;
vector unsigned char vf;
vector unsigned int altivec_vectorShiftInt19 = vector unsigned int altivec_vectorShiftInt19 =
vec_add(vec_splat_u32(10), vec_splat_u32(9)); vec_add(vec_splat_u32(10), vec_splat_u32(9));
if ((uintptr_t)dest % 16) {
/* badly aligned store, we force store alignment */
/* and will handle load misalignment on val w/ vec_perm */
vector unsigned char perm1;
vector signed int v1;
for (i = 0; (i < dstW) &&
(((uintptr_t)dest + i) % 16); i++) {
int t = val[i] >> 19;
dest[i] = (t < 0) ? 0 : ((t > 255) ? 255 : t);
}
perm1 = vec_lvsl(i << 2, val);
v1 = vec_ld(i << 2, val);
for (; i < (dstW - 15); i += 16) {
int offset = i << 2;
vector signed int v2 = vec_ld(offset + 16, val);
vector signed int v3 = vec_ld(offset + 32, val);
vector signed int v4 = vec_ld(offset + 48, val);
vector signed int v5 = vec_ld(offset + 64, val);
vector signed int v12 = vec_perm(v1, v2, perm1);
vector signed int v23 = vec_perm(v2, v3, perm1);
vector signed int v34 = vec_perm(v3, v4, perm1);
vector signed int v45 = vec_perm(v4, v5, perm1);
vector signed int vA = vec_sra(v12, altivec_vectorShiftInt19);
vector signed int vB = vec_sra(v23, altivec_vectorShiftInt19);
vector signed int vC = vec_sra(v34, altivec_vectorShiftInt19);
vector signed int vD = vec_sra(v45, altivec_vectorShiftInt19);
vector unsigned short vs1 = vec_packsu(vA, vB);
vector unsigned short vs2 = vec_packsu(vC, vD);
vector unsigned char vf = vec_packsu(vs1, vs2);
vec_st(vf, i, dest);
v1 = v5;
}
} else { // dest is properly aligned, great
for (i = 0; i < (dstW - 15); i += 16) {
int offset = i << 2;
vector signed int v1 = vec_ld(offset, val);
vector signed int v2 = vec_ld(offset + 16, val);
vector signed int v3 = vec_ld(offset + 32, val);
vector signed int v4 = vec_ld(offset + 48, val);
vector signed int v5 = vec_sra(v1, altivec_vectorShiftInt19);
vector signed int v6 = vec_sra(v2, altivec_vectorShiftInt19);
vector signed int v7 = vec_sra(v3, altivec_vectorShiftInt19);
vector signed int v8 = vec_sra(v4, altivec_vectorShiftInt19);
vector unsigned short vs1 = vec_packsu(v5, v6);
vector unsigned short vs2 = vec_packsu(v7, v8);
vector unsigned char vf = vec_packsu(vs1, vs2);
vec_st(vf, i, dest);
}
}
for (; i < dstW; i++) {
int t = val[i] >> 19;
dest[i] = (t < 0) ? 0 : ((t > 255) ? 255 : t);
}
}
// FIXME remove the usage of scratch buffers. for (i = 0; i < 16; i++)
static void yuv2planeX_altivec(const int16_t *filter, int filterSize, val[i] = dither[(x + i + offset) & 7] << 12;
const int16_t **src, uint8_t *dest, int dstW,
const uint8_t *dither, int offset)
{
register int i, j;
DECLARE_ALIGNED(16, int, val)[dstW];
for (i = 0; i < dstW; i++) vo1 = vec_ld(0, val);
val[i] = dither[(i + offset) & 7] << 12; vo2 = vec_ld(16, val);
vo3 = vec_ld(32, val);
vo4 = vec_ld(48, val);
for (j = 0; j < filterSize; j++) { for (j = 0; j < filterSize; j++) {
vector signed short l1, vLumFilter = vec_ld(j << 1, filter); vector signed short l1, vLumFilter = vec_ld(j << 1, filter);
...@@ -111,36 +70,51 @@ static void yuv2planeX_altivec(const int16_t *filter, int filterSize, ...@@ -111,36 +70,51 @@ static void yuv2planeX_altivec(const int16_t *filter, int filterSize,
vLumFilter = vec_perm(vLumFilter, vLumFilter, perm0); vLumFilter = vec_perm(vLumFilter, vLumFilter, perm0);
vLumFilter = vec_splat(vLumFilter, 0); // lumFilter[j] is loaded 8 times in vLumFilter vLumFilter = vec_splat(vLumFilter, 0); // lumFilter[j] is loaded 8 times in vLumFilter
perm = vec_lvsl(0, src[j]); perm = vec_lvsl(x << 1, src[j]);
l1 = vec_ld(0, src[j]); l1 = vec_ld(x << 1, src[j]);
for (i = 0; i < (dstW - 7); i += 8) { yuv2planeX_8(vo1, vo2, l1, src[j], x, perm, vLumFilter);
int offset = i << 2; yuv2planeX_8(vo3, vo4, l1, src[j], x + 8, perm, vLumFilter);
vector signed short l2 = vec_ld((i << 1) + 16, src[j]); }
vector signed int v1 = vec_ld(offset, val); vo1 = vec_sra(vo1, altivec_vectorShiftInt19);
vector signed int v2 = vec_ld(offset + 16, val); vo2 = vec_sra(vo2, altivec_vectorShiftInt19);
vo3 = vec_sra(vo3, altivec_vectorShiftInt19);
vo4 = vec_sra(vo4, altivec_vectorShiftInt19);
vs1 = vec_packsu(vo1, vo2);
vs2 = vec_packsu(vo3, vo4);
vf = vec_packsu(vs1, vs2);
vec_st(vf, 0, dest);
}
vector signed short ls = vec_perm(l1, l2, perm); // lumSrc[j][i] ... lumSrc[j][i+7] static inline void yuv2planeX_u(const int16_t *filter, int filterSize,
const int16_t **src, uint8_t *dest, int dstW,
const uint8_t *dither, int offset, int x)
{
int i, j;
vector signed int i1 = vec_mule(vLumFilter, ls); for (i = x; i < dstW; i++) {
vector signed int i2 = vec_mulo(vLumFilter, ls); int t = dither[(i + offset) & 7] << 12;
for (j = 0; j < filterSize; j++)
t += src[j][i] * filter[j];
dest[i] = av_clip_uint8(t >> 19);
}
}
vector signed int vf1 = vec_mergeh(i1, i2); static void yuv2planeX_altivec(const int16_t *filter, int filterSize,
vector signed int vf2 = vec_mergel(i1, i2); // lumSrc[j][i] * lumFilter[j] ... lumSrc[j][i+7] * lumFilter[j] const int16_t **src, uint8_t *dest, int dstW,
const uint8_t *dither, int offset)
{
int dst_u = -(uintptr_t)dest & 15;
int i;
vector signed int vo1 = vec_add(v1, vf1); yuv2planeX_u(filter, filterSize, src, dest, dst_u, dither, offset, 0);
vector signed int vo2 = vec_add(v2, vf2);
vec_st(vo1, offset, val); for (i = dst_u; i < dstW - 15; i += 16)
vec_st(vo2, offset + 16, val); yuv2planeX_16_altivec(filter, filterSize, src, dest + i, dither,
offset, i);
l1 = l2; yuv2planeX_u(filter, filterSize, src, dest, dstW, dither, offset, i);
}
for (; i < dstW; i++)
val[i] += src[j][i] * filter[j];
}
altivec_packIntArrayToCharArray(val, dest, dstW);
} }
static void hScale_altivec_real(SwsContext *c, int16_t *dst, int dstW, static void hScale_altivec_real(SwsContext *c, int16_t *dst, int dstW,
......
...@@ -115,13 +115,13 @@ const int *sws_getCoefficients(int colorspace); ...@@ -115,13 +115,13 @@ const int *sws_getCoefficients(int colorspace);
// when used for filters they must have an odd number of elements // when used for filters they must have an odd number of elements
// coeffs cannot be shared between vectors // coeffs cannot be shared between vectors
typedef struct { typedef struct SwsVector {
double *coeff; ///< pointer to the list of coefficients double *coeff; ///< pointer to the list of coefficients
int length; ///< number of coefficients in the vector int length; ///< number of coefficients in the vector
} SwsVector; } SwsVector;
// vectors can be shared // vectors can be shared
typedef struct { typedef struct SwsFilter {
SwsVector *lumH; SwsVector *lumH;
SwsVector *lumV; SwsVector *lumV;
SwsVector *chrH; SwsVector *chrH;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment